package com.partsoft.dits.dsm;

import javax.sql.DataSource;

import com.partsoft.dits.DescriptorManager;
import com.partsoft.dits.DescriptorRegistry;

/**
 * 数据源工厂配置器
 */
public interface DataSourceManager extends DataSourceFactory,
		DescriptorRegistry<DataSourceDescriptor>,
		DescriptorManager<DataSourceDescriptor> {
	
	/**
	 * 通过数据源名称移除一个数据源
	 * @param dsName 数据源名称
	 */
	DataSource removeDataSource(String dsName);
	
	/**
	 * 获得所有的数据源实例
	 * @return
	 */
	DataSourceDescriptor[] getDescriptors();
	
	/**
	 * 获得数据源描述符
	 * @throws RuntimeException 如果找不到指定的名称，则抛出异常。
	 */
	DataSourceDescriptor getDescriptor(String dsName) throws RuntimeException;
	
	boolean hasDescriptor(String dsName);
	
	/**
	 * 使用一个数据源描述实例添加一个数据源
	 * @param dataSourceDescriptor 数据源描述
	 */
	DataSourceDescriptor addDescriptor(DataSourceDescriptor dataSourceDescriptor);
	
	
	DataSourceDescriptor removeDescriptor(String name);
	
	/**
	 * 修改数据源
	 * @param dsinfo 数据源描述实例
	 */
	DataSourceDescriptor modifyDescriptor(DataSourceDescriptor dsinfo );
	
}
